package com.hy.usercenter.utils.once;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.google.gson.Gson;
import com.hy.usercenter.utils.domain.UserData;
import lombok.extern.slf4j.Slf4j;

import java.util.List;


/**
 * @Description 导入用户全量数据
 *
 * @Author minsf
 * @Date 2023/2/18
 */
@Slf4j
public class ImportExcel {

    /**
     * 因为它不依赖spring的bean，可以直接执行
     * @param args
     */
    public static void main(String[] args) {
        String fileName = "C:\\Users\\a\\Desktop\\test.xlsx";

        readByListener(fileName);

        synchronousRead(fileName);
    }

    /**
     * 不通过监听器去读取
     * @param fileName
     */
    private static void synchronousRead(String fileName) {

        List<UserData> list = EasyExcel.read(fileName).head(UserData.class).sheet().doReadSync();
    }

    /**
     * 通过监听器读取
     * @param fileName
     */
    private static void readByListener(String fileName) {
        // 写法1：JDK8+ ,不用额外写一个DemoDataListener
        // since: 3.0.0-beta1
        Gson gson = new Gson();
        // 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行
        // 具体需要返回多少行可以在`PageReadListener`的构造函数设置
        EasyExcel.read(fileName, UserData.class, new PageReadListener<UserData>(dataList -> {
            for (UserData demoData : dataList) {
                log.info("读取到一条数据{}", gson.toJson(demoData));
            }
        })).sheet().doRead();
    }


}
